﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using BDSUETableAdapters;
using System.Data;
using System.IO;

/// <summary>
/// Clase de control para la gestion de tareas permite crear, modificar eliminar las tareas atraves de TareaTableAdapter.
/// la comunicación con la base de datos se realiza se realiza atraves del tablaAdapter TareaTableAdapter
/// TareaTableAdapter contiene los metodos de guardar, eliminar, consultar y modificar
/// 
/// Para crear y consultar tareas de seguimiento de seguimiento la comunicacion se realiza con SeguimientoTableAdpater
/// /// </summary>
public class GestionarTareas
{
	public GestionarTareas()
	{
		//
		// TODO: Agregar aquí la lógica del constructor
		//
	}

    /// <summary>
    /// Metodo para la creacion de tareas, realizando la conexion con la base de datos atraves de TareaTableAdapter 
    /// </summary>
    /// <param name="nombre">(string) nombre de la tarea</param>
    /// <param name="descripcion">(string) Descripción de la tarea</param>
    /// <param name="fechaInicio">(string) Fecha de publicación de la tarea</param>
    /// <param name="fechaLimite">(string) Fecha limite de la tarea</param>
    /// <param name="idArchivo">(string) identificador del archivo asociado</param>
    /// <returns>(bool) true si se pudo crear la tarea, false en caso contrario</returns>

    public bool CrearTarea(string nombre, string descripcion, string fechaInicio, string fechaLimite, int idArchivo)
    {
        try
        {
            TareaTableAdapter tarea = new TareaTableAdapter();
            tarea.Guardar(nombre, descripcion, fechaInicio, fechaLimite, idArchivo);
            return true;
        }
        catch { return false; }
    }

    /// <summary>
    /// Elimina una tarea del sistema.
    /// </summary>
    /// <param name="id">(int) identificador de la tarea a eliminar</param>
    /// <returns>(bool) true si se puede eliminarTarea</returns>
    public bool EliminarTarea(int id)
    {
        try
        {
            TareaTableAdapter tarea = new TareaTableAdapter();
            tarea.Eliminar(id);
            return true;
        }
        catch { return false; }

    }

    /// <summary>
    /// Modifica una tarea elegida por el usuario
    /// </summary>
    /// <param name="id">(int) Identificador de la tarea a modificar</param>
    /// <param name="descripcion">(String) Nueva desripción de la tarea</param>
    /// <param name="fechaInicio">(String) Nueva fecha de inicio de la tarea</param>
    /// <param name="fechaLimite">(String) Nueva fecha limite de la tarea</param>
    /// <returns>(bool) retorna true si se pudo eliminar la tarea, false en caso contrario</returns>

    public bool ModificarTarea(string nombre, string descripcion, string fechaInicio, string fechaLimite, int idArchivo, int idTarea)
    {
        try
        {
            TareaTableAdapter tarea = new TareaTableAdapter();
            tarea.Actualizar(nombre, descripcion, fechaInicio, fechaLimite, idArchivo, idTarea);
            return true;
        }
        catch { return false; }
        
    }

    /// <summary>
    /// metodo para consultar las tareas que se encuentran en el sistema, el tipo de busqueda 
    /// es unica o de todas las tareas    /// 
    /// </summary>
    /// <param name="id">int()identificador de la tarea a buscar</param>
    /// <param name="tipoBusqueda">EL tipo de busqueda varia entre los valores "unica y todas"</param>
    /// <returns>dataTable con la información consultada</returns>
    /// 
    public DataTable ConsultarTarea(int id, string tipoBusqueda)
    {
        TareaTableAdapter Tareas = new TareaTableAdapter();
        if (tipoBusqueda == "todas")
            return Tareas.Consultar();
        else
            return Tareas.ConsultarUnicaID(id);
    }

    /// <summary>
    /// Metodo para consultar todas las tareas de seguimiento existentes en el sistema
    /// realiza la conexion con la base de datos atraves de SeguimientoTareaTableAdapter 
    /// </summary>
    /// <returns>dataTable con la información consultada</returns>

    public DataTable ConsultarSegTareas()
    {
        SeguimientoTareaTableAdapter segTarea = new SeguimientoTareaTableAdapter();
        return segTarea.ConsultaSeguimineto();
    }

    /// <summary>
    /// Metodo para crear el seguimiento de una tarea, este metodo es invocado cuando un usuario con
    /// rol practicante, revisa por primera ves una tarea.
    /// </summary>
    /// <param name="nombre">(string) Nombre de usuario del practicante</param>
    /// <param name="idTarea">(int) identificador de la tarea</param>
    /// <returns>(bool) retorna true si se pudo crear el seguimiento, false si ya existe</returns>

    public bool CrearTareaSeguimiento(string nombre, int idTarea)
    {
        SeguimientoTareaTableAdapter segTarea = new SeguimientoTareaTableAdapter();
        
        try
        {
            if (Convert.ToInt32(segTarea.ValidarTareaSeguimiento(nombre, idTarea)) == 0)
            {
                segTarea.GuardarSeguimiento(nombre, idTarea);
                return true;
            }
            else 
                return false;
        }
        catch
        {
            return false;
        }
    }
}
